fun main() {
    //List,Set,Map
    //List
    //只读列表
    val listOf = listOf(1, 2, 3)
    //可变列表
    val mutableListOf = mutableListOf(1, 2, 3)
    //声明类型
    val mutableListOf1: MutableList<String> = mutableListOf("a", "b", "c")
    //获得可变列表的只读视图：List
    //casting
    val mutableListOf1Locked: List<String> = mutableListOf1
    //访问
    println("下标1：$listOf[1]")
    //获取第一项或最后一项
    println("第一项：$listOf.first()")//扩展函数
    println("最后一项：$listOf.last()")
    //获取项目数
    println("总数$listOf.count()")
    //检查某个项目是否在列表中
    println("1是否在项目中${1 in listOf}")
    //添加
    mutableListOf.add(10)
    mutableListOf.add(2, 100)
    //删除
    mutableListOf.remove(1)
    println("修改后的列表$mutableListOf")
    //Set
    //只读Set
    val of = setOf(1, 2, 3, 4)
    //可变Set
    val mutableSetOf = mutableSetOf(1, 1, 2, 3)
    //可变Set的只读视图
    val setLocked: Set<Int> = mutableSetOf
    //无法通过索引访问
    //获取项数
    println("setof项数${of.count()}")
    //检查某个项是否在集合中
    println(1 in of)
    //添加或删除
    mutableSetOf.add(2)
    mutableSetOf.remove(3)
    //Map
    //只读Map
    val mapOf = mapOf(1 to "a", 2 to "3")
    //可变Map
    val mutableMapOf = mutableMapOf(1 to "2", 2 to "3")
    //可变Map的只读视图
    val mapOfLocked: Map<Int, String> = mutableMapOf
    //键值访问
    println(mapOf[1])
    //获取项目数
    println(mapOf.count())
    //添加或删除
    mutableMapOf.put(3, "A")
    mutableMapOf.remove(1)
    println(mutableMapOf)
    //检查是否包含特定键
    mapOf.containsKey(1)
    //获取Map的键或值的集合
    val keys: Set<Int> = mapOf.keys
    val values: Collection<String> = mapOf.values
    //检查键或值是否在映射中
    println(1 in mapOf.keys)
    println("a" in mapOf.values)

}